The present invention relates generally to distributed computing systems, and more particularly to an apparatus, method, and computer program for dynamically expanding a RAID (Redundant Array of Independent Disks) set while assuring data integrity during the expansion process.
In a distributed computing system, such as for example a computing system having a plurality of computers (host computer(s) and/or workstation computer(s)) connected over a network, a host computer is connected to a storage (memory) system via a storage controller. The host communicates with the storage controller through an interface, such as for example, a small computer systems interface (SCSI), a Fibre Channel interface, or other interface as are known in the art. RAID technology is frequently employed to provide data redundancy for distributed computing systems.
In a RAID architecture system, the host communicates to a RAID storage controller via an interface. In turn, the RAID storage controller is connected to one or more storage elements (i.e., the RAID set, which may include for example, hard disk drives, optical disks, magneto-optical disks, solid state storage devices, CD-ROM disks, DVD disks, magnetic tape drives, or other storage media as are known in the art) for storing host data. The host writes to, or reads from, the storage elements through the RAID storage controller. The RAID storage controller writes data to the various storage elements according to the user""s selected RAID level or scheme providing the user a selectable level of redundancy for host data. Various RAID levels or schemes are known in the art.
In some systems the number of storage elements for storing the host data is variable. That is, the number of storage elements is dependent on the amount of information required to be stored. Furthermore, in general, each of the RAID levels may be implemented with a variable number of storage elements, although in some cases, a relationship exists between the RAID level and the number of drives as is known in the art. Accordingly, for some systems, expansion (dynamic expansion) to add one or more storage elements to the existing RAID set is required as host storage requirements increase.
One problem that has arisen during RAID set expansion is maintaining data integrity for the system in the event of a power failure during the expansion process. While ordinarily data integrity is high in a RAID because of the redundancy built into the RAID architecture system, during the expansion process, a power failure may result in data loss.
Another problem that has arisen with conventional systems and methods is that the data migration is only performed for dynamic expansion of physical capacity of the existing RAID level and does not involve a change in RAID level or redundancy. That is, the dynamic expansion is performed by adding at least one additional storage element, typically by adding at least one additional disk, and the RAID level or redundancy of the expanded configuration is the same as the RAID level or redundancy of the configuration before expansion.
Conventional approaches for backing up data that is stored in a destructive zone during data migration depends on the existence of additional disks into which RAID expands its physical capacity. In general terms, the destructive zone is the number of data stripes which are being migrated into the destination array, one or more of them is liable to suffer data loss in the event of a power loss, because source data stripes are being overwritten as a result of the data migration. In such a power loss situation, when the power is restored, if the source data is no longer completely available for re-migration, the affected stripes have lost data.
For ease of implementation and preservation of data integrity, whole stripe groups containing said susceptible stripes are viewed by the destination array as part of the destructive zone.
In conventional approaches, data in the destructive zone is backed up onto the last added disk before data migration starts. For any data migration that does not involve additional disk, the traditional approach does not work, because such data migration relies on the availability of the unused storage of the last added disk drive.
With reference to FIG. 1, the conventional system 101 and approach for a RAID data migration involves N disks 102 (102-1, . . . , 102-N) with at least one additional disk 102-N+1 for expansion, and where all data in the destructive zone is backed up before data migration (dynamic RAID capacity expansion only). In the case of adding 1 disk to such system, M=N+1. In the referenced figures, the notation the Backup Buffer (B.B.) is used to refer to the area of disk 102-M that contains or stores a copy of all data stripes in the destructive zone (D.Z.) before data migration for the stripe groups starts. In a simple sense, the destructive zone spans an amount of storage that would or might be overwritten by data during migration of the data from the original (source) storage configuration to the new (destination) storage configuration which is susceptible to power loss before its migration is complete. The disk drives 102 are coupled to a host computer 104 via a disk controller 106 as is known in the art.
Data migration using such a traditional approach does not address a change in RAID redundancy (level). Therefore, even if there is a need for RAID capacity expansion, which means additional disks are available for data migration, the traditional approach cannot be applied if such RAID level change is involved.
What is desired is to provide for dynamic expansion capability in terms of capacity and/or redundancy while maintaining host data integrity, and to permit the dynamic expansion with a change in RAID level when desired, without compromising data integrity.
The invention provides system, apparatus, method, and computer program for dynamically expanding a storage system, particularly a RAID (Redundant Array of Independent Disks) set based storage system, while assuring data integrity during the expansion process.
In one embodiment, the invention provides a method for redistributing data in a data storage system. This embodiment of the method includes the steps of: identify data in a destructive zone of the storage system; migrating data before reaching the destructive zone from source storage devices to destination storage devices; copying data onto a number of backup buffers; mirroring data backed up in the copying step onto free space in the storage system; migrating data backed up in the mirroring step to destination storage devices; repeating the steps of migrating, copying, and mirroring, until data that will be in the destructive zone is migrated out of the destructive zone; and migrating remaining data from the source disks onto the destination disks.
In another embodiment, the method for redistributing data among disks in a data storage system includes the steps of: identifying the number of stripe groups in a destructive zone based on predefined factors; migrating all data before reaching the destructive zone from source disks to destination disks; copying all data that will be next to be in the stripe group of the destructive zone onto an equal number of backup buffer stripe buffers, each stripe using free space near the end of the physical volume of each disk; mirroring data stripes backed up in the copying all data step onto the same set of disks in the lower stripe group position of free space in the storage system; migrating data of the stripe group backed up in the mirroring step to destination disks from the source disks; repeating the steps of migrating, copying, and mirroring, until all data that will be in stripe groups in the destructive zone is migrated out of the destructive zone; and migrating all remaining data, if any, from the source disks onto the destination disks.
System, storage system controller, computer program, and computer program product utilizing the inventive method are also provided.